A data processor such as a file server can include at least one Network Interface card (“NIC”) to provide access to a communications network. The NIC includes at least one network device port for communicating over a particular type of communications network. The specific type and format of data transmitted over the network depends upon the communication network protocols used such as, the Ethernet or Institute of Electrical and Electronics Engineers (IEEE) 802.3 protocol, higher layer Transmission Control Protocol/Internet Protocol (TCP/IP), or the Asynchronous Transfer Method (“ATM”) protocol.
In a communications network that transmits data using the Ethernet protocol, ports coupled to the communications network are identified by a Media Access Control (“MAC”) address. Data is transmitted over the communications network in the payload of a data packet. Each data packet includes a MAC source address associated with the transmitting port and a MAC destination address associated with the port to which the data packet is to be delivered.
The file server receives requests for files made accessible by the file server from clients connected to the communication network. Each such request is transmitted in the payload of a data packet. The data packet includes a MAC destination address assigned to one or more network device ports in the file server. Although the client can transmit data to the file server to any of the MAC addresses assigned to network device ports in the file server, this can result in uneven distribution of data packets, resulting in reduced bandwidth to the file server.
Bandwidth to a file server can be increased by aggregating physical links from the file server to a switch connected to the communications network. One scheme for link aggregation or trunking for an Ethernet network is described in the IEEE 802.3ad standard. To implement link aggregation, a plurality of ports in the switch are assigned to a trunk by assigning the same MAC address to each port. A data packet for the MAC destination address assigned to the trunk can be forwarded through any port that is a member of the trunk.
A virtual device driver in the file server can then process data packets received by any of the network device ports that are members of the trunk. The file server also selects one of the network device ports that are members of the trunk through which to transmit a data packet to the switch.
Upon detecting a failure in one of the network device ports or physical links in the trunk, the virtual device driver can also transmit the data packet through another network device port that is a member of the same trunk. However, upon failure of the trunk there is no alternate path to the MAC address.